<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

</style>
<body>
   <h1>继承</h1>
</body>
<script>
//   es6中class类继承  es5  原型链继承  构造函数继承  组合继承

//  先定义一个父类
class Father{
    constructor(nickname,money,house){
        this.name= nickname
        this.money = money
        this.house = house
        this.eat = function(){
            console.log('我是Father上的方法eat');
        }
        console.log(nickname);
       console.log(this); //在clss中 this执行实例化出来的对象

    }
    jump(){
        console.log('我是Father方法 跳一跳');
    }
}




class Son extends Father{
    constructor(name,money,house){
        // console.log(this);
      super() //他的作用  更改this指向，复制父类的属性和方法，访问this之前一定要先调用super
      
      this.name = name
      this.money = money
      this.house = house
      console.log(this);
      this.type = 'hhhhh'
    }
    fn(){
        console.log('hhhh');
    }
}
let fa = new Father('爸爸','有钱','有别墅')
console.log(fa);
let s = new Son('儿子','有钱','有别墅')
console.log(s);


//   原型链？？？
// 当我们试图访问一个对象的属性或者方法时，他不仅仅在该对象上寻找，还可以去他对象的原型上去找，以及对象的原型的原型，以此层层向上搜索，知道找到原型链的末尾（null）或者是直到找到与我们要匹配的属性或者方法

</script>
</html>